<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>
    function diffTime(d1, d2) {
        console.log("d1:", d1, "  d2:", d2)
        d1 = new Date(d1.replace(/-/g, '/')) //结束时间
        d2 = new Date(d2.replace(/-/g, '/')) //开始时间
        if (d1.getTime() > d2.getTime()) {
            console.log('结束日期不能小于开始时间')
            return false
        }
        let Y1 = d1.getFullYear() // 结束年份
        let Y2 = d2.getFullYear() // 开始年份
        let M1 = d1.getMonth() + 1 // 结束月份
        let M2 = d2.getMonth() + 1 // 开始月份
        let D1 = d1.getDate() // 结束日期
        let D2 = d2.getDate() // 开始日期
        let M1_days = new Date(Y1, M1, 0).getDate() // 结束时间当月已过的天数
        let M2_days = new Date(Y2, M2, 0).getDate() // 开始时间当月经过的天数
        let obj = {} // 结果存储器
        let year = Y1 - Y2 - 1 // 相差整年数
        let month
        let day
        if (year < 0) {
            month = M1 - M2 - 1  // 相差整月数(同年)
            month = M1 - 1 + 12 - M2 // 相差整月数(非同年)
        }
        let diffDays = D1 + (M2_days - D2) // 相差总天数
        if (diffDays >= M2_days) {
            month = month + 1
            day = diffDays - M2_days
        } else {
            day = diffDays
        }
        year += Math.floor(month / 12)
        if (year < 0) {
            year = 0
        }
        month = month % 12
        obj.year = year
        obj.month = month
        obj.day = day
        console.log(obj)
        console.log('相差' + obj.year + '年' + obj.month + '月' + obj.day + '日')
        return obj
    }

    console.log(diffTime("2023-02-11", "2023-03-16"))

</script>
</body>
</html>